home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #2 / Amiga Plus CD - 2004 - No. 02.iso / AmigaPlus / Tools / Development / AmigaTalk / system / TrackDisk.st < prev    next >
Encoding:
Text File  |  2004-01-31  |  3.2 KB  |  158 lines

  1. " -------------------------------------------------------------------- "
  2. " TrackDisk Class allows the user low-level (device) access to any     "
  3. " floppy drives attached to their system (DF0: through DF3:).          "
  4. ""
  5. "  WARNING:  You should know what you're doing to the Amiga OS before  "
  6. "            messing with this Class, or any other System Class!       "
  7. " ---------------------------------------------------------------------"
  8. " The following methods are commented out, because turnMotorOff 
  9.   hangs up my system (JTS).
  10. |
  11.   turnMotorOn 
  12.     ^ <primitive 229 17 private>     
  13. |
  14.   turnMotorOff 
  15.     ^ <primitive 229 18 private>   
  16. "
  17. " ---------------------------------------------------------------------"
  18.  
  19. Class TrackDisk :Device ! private diskName trkNumber !
  20. [
  21.   ejectDisk      "Won't do anything for most Amigas!"
  22.  
  23.     ^ <primitive 229 16 private>
  24. |
  25.   formatTrack: trackNumber data: theDataBytes
  26.  
  27.     "DANGER! DANGER, Will Robinson!"
  28.  
  29.     trkNumber <- trackNumber.
  30.  
  31.     ^ <primitive 229 19 theDataBytes trackNumber private>
  32. |
  33.   readRawData: trackNumber
  34.  
  35.     trkNumber <- trackNumber.
  36.  
  37.     ^ <primitive 229 20 trackNumber private>
  38. |
  39.   writeRawData: rawDataBytes track: trackNumber
  40.  
  41.     trkNumber <- trackNumber.
  42.  
  43.     ^ <primitive 229 21 rawDataBytes trackNumber private>.
  44. |
  45.   clearReadBuffer
  46.  
  47.     <primitive 229 4 private>      
  48. |
  49.   setSyncType: newSyncType
  50.  
  51.     <primitive 229 5 newSyncType private>
  52. |
  53.   getErrorString
  54.  
  55.     ^ <primitive 229 8 private> 
  56. |
  57.   getSectorSize
  58.  
  59.     ^ <primitive 229 12 private>
  60. |
  61.   getTrackSize
  62.  
  63.     ^ <primitive 229 10 private>
  64. |
  65.   getDeviceType
  66.  
  67.     ^ <primitive 229 9 private>
  68. |
  69.   getDriveType
  70.  
  71.     "1 = 3.5in, 2 = 5.25in, 3 = 3.5in spinning at 150 RPM."
  72.     ^ <primitive 229 11 private>
  73. |
  74.   displayDriveType ! type !
  75.  
  76.     type <- self getDriveType.
  77.  
  78.     (type == 1)
  79.        ifTrue:  ['3-1/2" Floppy Disk.' print]
  80.        ifFalse: [(type == 2)
  81.                     ifTrue:  ['5-1/4" Floppy Disk.' print]
  82.                     ifFalse: ['3-1/2" Floppy spinning at 150 RPM' print]
  83.                 ]
  84. |
  85.   getNumberOfTracks 
  86.  
  87.     ^ <primitive 229 13 private>
  88. |
  89.   getTotalSectors 
  90.  
  91.     ^ <primitive 229 14 private>
  92. |
  93.   getTotalSize ! secsize numsecs !
  94.  
  95.     numsecs <- self getTotalSectors.
  96.  
  97.     secsize <- self getSectorSize.
  98.  
  99.     ^ numsecs * secsize
  100. |
  101.   seekTrack: trackNumber 
  102.  
  103.     trkNumber <- trackNumber.
  104.  
  105.     ^ <primitive 229 15 trackNumber private>
  106. |
  107.   isDiskPresent 
  108.  
  109.     ^ <primitive 229 6 private>
  110. |
  111.   isWriteProtected 
  112.  
  113.     ^ <primitive 229 7 private>
  114. |
  115.   readTrack: trackNumber
  116.  
  117.     trkNumber <- trackNumber.
  118.  
  119.     ^ <primitive 229 2 trackNumber private>
  120.     
  121. |
  122.   writeTrack: dataBytesOut track: trackNumber
  123.  
  124.     trkNumber <- trackNumber.
  125.  
  126.     ^ <primitive 229 3 dataBytesOut trackNumber private>
  127. |
  128.   displayBytes: byteArray ! size wTitle !
  129.  
  130.     size   <- self getTrackSize.
  131.  
  132.     wTitle <- String new.
  133.  
  134.     wTitle <- 'displayBytes - size = ',(size asString),' Track #: ', (trkNumber asString).
  135.  
  136.     <primitive 229 22 byteArray wTitle>
  137. |
  138.   new: newDiskName
  139.  
  140.     private  <- <primitive 229 23 newDiskName>.
  141.  
  142.     diskName <- newDiskName.
  143.  
  144.     ^ self
  145. |
  146.   open: newUnitNumber
  147.  
  148.     <primitive 229 1 newUnitNumber private>
  149. |     
  150.   close
  151.  
  152.     <primitive 229 0 private>.
  153.     
  154.     <primitive 250 5 0 private>. "NO TURNING BACK FROM HERE!"
  155.     
  156.     ^ nil
  157. ]
  158.